/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.gob.pnp.despachadores;

import java.sql.*;
import java.util.*;
import oracle.jdbc.*;
import pe.gob.pnp.actions.*;
import pe.gob.pnp.factories.*;

/**
 *
 * @author Eduardo Cavero Guzmán
 * @date 08/07/2010
 */
public class CorrelativoDespachador {

    public static Correlativo obtenerCorrelativos(Correlativo correlativo) throws SQLException {
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexion();
            String sql = "{call SP_OBTENER_CORRELATIVOS(?,?,?)}";
            CallableStatement cs = conn.prepareCall(sql);
            cs.setInt(1, correlativo.getNtippIdentificador());
            cs.registerOutParameter(2, Types.INTEGER);
            cs.registerOutParameter(3, Types.INTEGER);
            cs.execute();
            correlativo.setNcorrInicial(2);
            correlativo.setNcorrActual(cs.getInt(3));
        } finally {
            ConnectionPool.liberarConexion(conn);
        }
        return correlativo;
    }

    public static List<Correlativo> obtenerListaCorrelativos() throws SQLException {
        List<Correlativo> lstCorrelativos = new ArrayList<Correlativo>();
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexion();
            String sql = "{call SP_OBTENER_LISTA_CORRELATIVOS(?)}";
            CallableStatement cs = conn.prepareCall(sql);
            cs.registerOutParameter(1, OracleTypes.CURSOR);
            cs.execute();
            ResultSet rs = (ResultSet) cs.getObject(1);
            while (rs.next()) {
                Correlativo correlativo = new Correlativo();
                correlativo.setNtippIdentificador(rs.getInt("NTIPP_IDENTIFICADOR"));
                correlativo.setNcorrActual(rs.getInt("NCORR_INICIAL"));
                correlativo.setNcorrActual(rs.getInt("NCORR_ACTUAL"));
                lstCorrelativos.add(correlativo);
            }

        } finally {
            ConnectionPool.liberarConexion(conn);
        }

        return lstCorrelativos;
    }
}
